Micron Document
██████╗ ███████╗████████╗██╗██████╗ ███████╗██████╗ ██╗ █████╗
██╔══██╗██╔════╝╚══██╔══╝██║██╔══██╗██╔════╝██╔══██╗██║██╔══██╗
██████╔╝█████╗ ██║ ██║██████╔╝█████╗ ██║ ██║██║███████║
██╔══██╗██╔══╝ ██║ ██║██╔═══╝ ██╔══╝ ██║ ██║██║██╔══██║
██║ ██║███████╗ ██║ ██║██║ ███████╗██████╔╝██║██║ ██║
╚═╝ ╚═╝╚══════╝ ╚═╝ ╚═╝╚═╝ ╚══════╝╚═════╝ ╚═╝╚═╝ ╚═╝


🬧 The NomadNet Encyclopedia | Archives | Info
- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b

🔍 Search

¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

React (web framework)
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
top
mwbqReact (noto anche come mwbgReact.js o mwbwReactJS) è un web framework mwcaopen-source, mwcqfront-end, mwcgJavaScriptcite-ref-react-1-0[1] per la creazione di mwdwinterfacce utente. È mantenuto da mweaMeta (già Facebook) e da una comunità di singoli sviluppatori e aziende.cite-ref-2[2]cite-ref-3[3]cite-ref-4[4]

React può essere utilizzato come base nello sviluppo di applicazioni a mwhgpagina singola ma è utilizzabile anche su mobile tramite mwhwReact Native, una libreria sempre sviluppata da Meta che tramuta i componenti React in componenti nativi (mwiaiOS e mwiqAndroid)cite-ref-5[5]. Tuttavia, React si occupa solo del rendering dei dati sul mwjgDOM, pertanto la creazione di applicazioni React richiede generalmente l'uso di librerie aggiuntive per lo state management e il routing.cite-ref-6[6] Reduxcite-ref-7[7] e React Routercite-ref-8[8] sono i rispettivi esempicite-ref-react-9-0[9] di tali librerie. A questo fine è possibile utilizzare anche dei framework terzi, come ad esempio mwnwNext.js.cite-ref-10[10]

Contents

JSX
Storia
Note

──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

Utilizzo di base

Di seguito è riportato un esempio rudimentale di utilizzo di React in HTML con mwpwJSX e JavaScript.

import React from 'react';
import ReactDOM from 'react-dom/client';
const Saluto = () => {
return (
<div className="hello-world">
<h1>Ciao, mondo!</h1>
</div>
);
};
const App = () => {
return <Saluto />;
};
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
<React.StrictMode>
<App />
</React.StrictMode>
);

in base al documento HTML di seguito.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>React App</title>
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
</body>
</html>

La funzione Saluto è un componente React che mostra il famoso "Hello, world" introduttivo.

Caratteristiche degne di nota

Componenti

Il codice di React è costituito da entità denominate componenti. I componenti possono essere sottoposti a rendering su un particolare elemento nel mwaqyDOM usando la libreria React DOM. Quando si esegue il rendering di un componente, si possono passare valori noti come "props"cite-ref-11[11]:

ReactDOM.render(<Greeter greeting="Hello World!" />, document.getElementById('myReactApp'));

I due modi principali per dichiarare i componenti in React sono tramite componenti funzionali e componenti basati su classi.

Componenti funzionali

I componenti funzionali vengono dichiarati con una funzione che quindi restituisce alcuni JSX.

const Greeting = (props) => <div>Hello, {props.name}!</div>;

Componenti basati su classi

I componenti basati su classi vengono dichiarati utilizzando le classi mwaumES6. Sono anche noti come componenti "stateful", perché il loro stato può contenere valori in tutto il componente e può essere passato ai componenti figlio tramite props:

class ParentComponent extends React.Component {
state = { color: 'green' };
render() {
return (
<ChildComponent color={this.state.color} />
);
}
}

DOM virtuale

Un'altra caratteristica notevole è l'uso di un mwayyDocument Object Model (DOM) virtuale. React crea una cache della struttura dati in-memory, calcola le differenze risultanti e quindi aggiorna in modo efficiente il DOM visualizzato dal browser.cite-ref-workingwiththebrowser-12-0[12] Ciò consente al programmatore di scrivere codice come se l'intera pagina fosse renderizzata su ogni modifica, mentre le librerie React eseguono il rendering solo dei sottocomponenti che cambiano effettivamente.

Metodi del ciclo di vita

I metodi del ciclo di vita sono hook che consentono l'esecuzione di codice in punti prestabiliti durante la vita di un componente.

• mway8shouldComponentUpdate consente allo sviluppatore di impedire il rendering non necessario di un componente restituendo false se non è richiesto un rendering.
• mwazecomponentDidMount viene chiamato una volta che il componente è "montato" (il componente è stato creato nell'interfaccia utente, spesso associandolo a un nodo mwaziDOM). Questo è comunemente usato per attivare il caricamento dei dati da una fonte remota tramite un'mwazmAPI.
• mwazucomponentWillUnmount viene chiamato immediatamente prima che il componente venga demolito o "smontato". Questo è comunemente usato per cancellare dipendenze che richiedono risorse al componente che non saranno semplicemente rimosse con lo smontaggio del componente (ad esempio, la rimozione di qualsiasi istanza mwazysetInterval() che è correlata al componente o un "eventListener" impostato sul "documento" a causa della presenza del componente).
• mwazgrender è il metodo di ciclo di vita più importante e l'unico richiesto in qualsiasi componente. Di solito viene chiamato ogni volta che viene aggiornato lo stato del componente, che dovrebbe riflettersi nell'interfaccia utente.

JSX

JSX, o JavaScript mwazsXML, è un'estensione della sintassi del linguaggio JavaScript.cite-ref-13[13] Simile nell'aspetto all'HTML, JSX fornisce un modo per strutturare il rendering dei componenti usando una sintassi familiare a molti sviluppatori. I componenti di React sono in genere scritti usando JSX, sebbene non debbano esserlo (i componenti possono anche essere scritti in puro JavaScript). JSX è simile a un'altra sintassi di estensione creata da Facebook per mwaaaPHP chiamata XHP.

Un esempio di codice JSX:

class App extends React.Component {
render() {
return (
<div>
<p>Header</p>
<p>Content</p>
<p>Footer</p>
</div>
);
}
}

Elementi nidificati

Elementi multipli sullo stesso livello devono essere racchiusi in un singolo elemento contenitore come l'elemento mwaecmwaeg<div> mostrato sopra o restituiti come matrice.cite-ref-14[14]

Attributi

JSX offre una gamma di attributi di elemento progettati per rispecchiare quelli forniti da HTML. Possono essere passati al componente anche attributi personalizzati.cite-ref-15[15] Tutti gli attributi verranno ricevuti dal componente come props.

Espressioni JavaScript

Le mwafuespressioni JavaScript (ma non le istruzioni) possono essere utilizzate all'interno di JSX con parentesi graffe mwafy{}:

<h1>{10+1}</h1>

L'esempio sopra verrà così visualizzato:

<h1>11</h1>

Dichiarazioni condizionali

Le istruzioni if-else non possono essere utilizzate all'interno di JSX ma è possibile utilizzare espressioni condizionali. L'esempio seguente mostrerà mwag8mwaha{mwahe mwahiimwahm mwahq===mwahu mwahy1mwahc mwahg?mwahk mwaho'true'mwahs mwahw:mwah0 mwah4'false'mwah8 mwaia} come stringa mwaiemwaii'true' perché mwaimi è uguale a 1.

class App extends React.Component {
render() {
const i = 1;
return (
<div>
<h1>{ i === 1 ? 'true' : 'false' }</h1>
</div>
);
}
}

Quanto sopra renderà:

<div>
<h1>true</h1>
</div>

Le funzioni e JSX possono essere utilizzate nei condizionali:

class App extends React.Component {
render() {
const sections = [1, 2, 3];
return (
<div>
{sections.length > 0 && sections.map(n => (
/* 'key' is used by react to keep track of list items and their changes */
/* Each 'key' must be unique */
<div key={"section-" + n}>Section {n}</div>
))}
</div>
);
}
}

Quanto sopra renderà:

<div>
<div>Section 1</div>
<div>Section 2</div>
<div>Section 3</div>
</div>

Il codice scritto in JSX richiede la conversione con uno strumento come mwaxg<i>Babel</i> prima di poter essere compreso dai browser web.cite-ref-16[16] Questa elaborazione viene generalmente effettuata nel corso del processo di mwax0costruzione del software, prima che l'applicazione venga mwax4distribuita.

Architettura oltre HTML

L'architettura di base di React si applica oltre al rendering HTML nel browser. Ad esempio, Facebook ha grafici dinamici che eseguono il rendering in tag mwayemwayi<mwaymcanvasmwayq>cite-ref-17[17] e Netflix e mwaykPayPal utilizzano il caricamento universale per eseguire il rendering di HTML identico sia sul server che sul client.cite-ref-paypal-isomorphic-reactjs-18-0[18]cite-ref-netflix-isomorphic-reactjs-19-0[19]

Hooks di React

Gli hooks, introdotti dalla versione 16.8 (Febbraio 2019), sono funzioni che consentono agli sviluppatori di "agganciarsi" allo stato di React e alle caratteristiche del ciclo di vita dei componenti delle funzioni.cite-ref-20[20] Rendono i codici leggibili e facilmente comprensibili. Gli hooks non funzionano all'interno delle classi: permettono infatti di utilizzare React senza classi.cite-ref-21[21]

React fornisce alcuni hook incorporati come mwaz0useState,cite-ref-22[22] mwa0iuseContext, mwa0museReducer e mwa0quseEffectcite-ref-23[23] per citarne alcuni. Sono tutti indicati nella guida alle API di riferimento degli Hooks.cite-ref-24[24] mwa00useState e mwa04useEffect, che sono i più utilizzati, sono utili al controllo rispettivamente degli stati e degli effetti collaterali nei componenti React.

Esempio di utilizzo di mwa1auseState in un componente funzionale.

const BirthdayComponent = () => {
const [myAge, setMyAge] = useState(16);
const handleClick = () => setMyAge(myAge + 1);
return (
<>
<p>My actual age is {myAge}.</p>
{myAge >= 18 && <p>... and now i'm adult</p>}
<button onClick={handleClick}>Add one year</button>
</>
);
};

Regole degli Hooks

Ci sono anche regole degli hookscite-ref-25[25] che devono essere seguite prima che gli stessi possano essere utilizzati:

1. Gli hooks devono essere chiamati solo al livello più alto (non all'interno di loop o istruzioni mwa90if).
2. Gli hooks devono essere chiamati solo dai componenti di funzione React, non dalle normali funzioni o dai componenti della classe.

Hooks personalizzati

La creazione di hooks personalizzaticite-ref-26[26] consente di estrarre la logica dei componenti in funzioni riutilizzabili. Un hook personalizzato è una funzione JavaScript il cui nome inizia con "use" e che può chiamare altri hooks. Le regole generali degli hooks si applicano anche a quelli personalizzati.

Idiomi comuni

React non intende fornire una "libreria di applicazione" completa. È progettato specificamente per la creazione di interfacce utentecite-ref-react-1-1[1] e pertanto non include molti degli strumenti che alcuni sviluppatori potrebbero ritenere necessari per creare un'applicazione. Ciò consente di scegliere le librerie che lo sviluppatore preferisce per eseguire attività quali l'accesso alla rete o l'archiviazione locale dei dati. Modelli comuni di utilizzo sono emersi man mano che la libreria è maturata.

Uso dell'architettura Flux

Per supportare il concetto di flusso di dati unidirezionale di React (che va in contrasto con il flusso bidirezionale di mwa-0AngularJS), l'architettura Flux rappresenta un'alternativa alla popolare architettura mwa-4modello-view-controller. Flux include le mwa-8azioni che vengono inviate tramite un mwa-adispatcher centrale a uno mwa-estore e le modifiche a quest'ultimo vengono propagate alla vista.cite-ref-flux-27-0[27] Se utilizzata con React, questa propagazione viene eseguita attraverso le proprietà del componente.

Flux può essere considerato una variante dell'mwa-cObserver pattern.cite-ref-28[28]

Un componente React sotto l'architettura Flux non dovrebbe modificare direttamente alcun oggetto prop, ma dovrebbe essere passato alle funzioni di callback che creano mwa-0azioni inviate dal dispatcher per modificare lo store. L'azione è un oggetto la cui responsabilità è descrivere ciò che è accaduto: ad esempio, un'azione che descrive un utente che "segue" un altro potrebbe contenere un ID utente, un ID utente di destinazione e il tipo mwa-4USER_FOLLOWED_ANOTHER_USER.cite-ref-29[29] Gli store, che possono essere pensati come modelli, possono modificarsi in risposta alle azioni ricevute dal dispatcher.

Questo modello viene talvolta espresso come "properties flow down, actions flow up". Molte implementazioni di Flux sono state create sin dalla sua nascita, delle quali forse la più nota è Redux, che dispone di un singolo store, spesso chiamato una mwbaqsingle source of truth (SSOT).cite-ref-30[30]

Sviluppo futuro

Lo stato del progetto può essere monitorato tramite il forum di discussione del core team.cite-ref-31[31] Tuttavia, le principali modifiche a React passano attraverso i repository issues e le mwba8richieste di pull di Future of React.cite-ref-32[32]cite-ref-33[33] Ciò consente alla comunità di React di fornire feedback sulle nuove potenziali funzionalità, sulle API sperimentali e sui miglioramenti della sintassi JavaScript.

Storia

React è stato creato da Jordan Walke, un ingegnere software di Facebook, che lo ha chiamato inizialmente "FaxJS".cite-ref-34[34] È stato influenzato da XHP, una libreria di componenti mwbb4HTML per mwbb8PHP. È stato utilizzato inizialmente sul News Feed di Facebook nel 2011 e successivamente su mwbcaInstagram nel 2012.cite-ref-35[35] È stato rilasciato al pubblico al JSConf US del maggio 2013.cite-ref-papp-36-0[36]

React Native, che consente lo sviluppo nativo di mwbcoAndroid, mwbcsiOS e mwbcwUWP con React, è stato annunciato al React Conf di Facebook a febbraio 2015 e rilasciato a marzo 2015.

Il 18 aprile 2017, Facebook ha annunciato React Fiber, un nuovo algoritmo di base della libreria React per la creazione di mwbc4interfacce utente.cite-ref-37[37] React Fiber è stato pensato come fondamento per eventuali miglioramenti e sviluppi futuri della libreria React.cite-ref-38[38]

Il 26 settembre 2017, è stato rilasciato al pubblico React 16.0.cite-ref-39[39]

Il 16 febbraio 2019, è stato rilasciato al pubblico React 16.8.cite-ref-40[40] Il rilascio ha introdotto gli hooks.cite-ref-41[41]

| Versione | Data di pubblicazione | Cambiamenti |
|---|---|---|
| 0.3.0 | 29 maggio 2013 | Versione pubblica iniziale |
| 0.4.0 | 20 luglio 2013 | Supporto ai nodi di commento < div >{ /* */ }</ div > , API di rendering lato server migliorate, rimosso React.autoBind, supporto per il prop key, miglioramenti ai moduli, bug corretti. |
| 0.5.0 | 20 ottobre 2013 | Migliorato l'utilizzo della memoria, supporto agli eventi di selezione e composizione, supporto a getInitialState e getDefaultProps nei mixin, aggiunti React.version e React.isValidClass, migliorata compatibilità per Windows. |
| 0.8.0 | 20 dicembre 2013 | Aggiunto supporto a righe e colonne, defer e async, loop per < audio > e < video > , attributi di autoCorrect. Aggiunti eventi onContextMenu, aggiornati jstransform, esprima-fb e browserify. |
| 0.9.0 | 20 febbraio 2014 | Aggiunto supporto a crossOrigin, download e hrefLang, mediaGroup e muted, sandbox, seamless e srcDoc, attributi scope. Aggiunti any, arrayOf, component, oneOfType, renderable, shape to React.PropTypes, Aggiunto supporto agli eventi onMouseOver e onMouseOut, Aggiunto supporto ad onLoad e onError sugli elementi <img>. |
| 0.10.0 | 21 marzo 2014 | Aggiunto supporto agli attributi srcSet e textAnchor, aggiunta della funzione di aggiornamento per dati immutabili, verifica dell'esclusione del tag di chiusura da tutti gli elementi void. |
| 0.11.0 | 17 luglio 2014 | Supporto SVG migliorato, evento e.view normalizzato, aggiornamento comando $apply, aggiunto supporto ai namespaces, aggiunta nuova API transformWithDetails, include pacchetti pre-compilati sotto dist/, MyComponent() ora restituisce un descrittore, anziché un'istanza. |
| 0.12.0 | 21 novembre 2014 | Aggiunte nuove funzionalità: Spread operator ({...}) introdotto per deprecare this.transferPropsTo. Aggiunto supporto per acceptCharset, classID, attributi HTML manifest, React.addons.batchedUpdate aggiunto all'API, @jsx React.DOM non più necessario. Risolti problemi con transizioni CSS. |
| 0.13.0 | 10 marzo 2015 | Deprecati pattern segnalati nella 0.12 come non più funzionanti, l'ordine di risoluzione dei ref è cambiato. Rimosse proprietà this._pendingState e this._rootNodeID. Supporto classi ES6, aggiunta API React.findDOMNode (componente), supporto a iteratori e sequenze immutable-js, aggiunta nuova funzionalità React.addons.createFragment, deprecata React.addons.classSet. |
| 0.14.1 | 29 ottobre 2015 | Aggiunto supporto a srcLang, default, attributi di tipo e attributo color, garantito accesso .props legacy su nodi DOM, corretto ScryRenderedDOMComponentsWithClass, aggiunto react-dom.js. |
| 15.0.0 | 7 aprile 2016 | Il rendering iniziale ora utilizza document.createElement invece di generare HTML, Niente più < span > extra, supporto SVG migliorato, ReactPerf.getLastMeasurements () è opaco, nuove deprecazioni introdotte con un avviso, risolte diversi piccoli leak di memoria, React DOM ora supporta gli attributi HTML cite e profile e le proprietà CSS cssFloat, gridRow e gridColumn. |
| 15.1.0 | 20 maggio 2016 | Correzione di un bug di batch, offerto l'accesso all'ultima assegnazione di oggetti, corretta regressione, rimosso utilizzo dell'utilità di merge, rinominati alcuni moduli. |
| 15.2.0 | 1 º luglio 2016 | Inclusione informazioni sullo stack dei componenti, rimossa la convalida dei props al momento del montaggio, aggiunti React.PropTypes.symbol, gestione onLoad a <link> , gestione onError all'elemento &lt; source &gt; , API isRunning(), corretta regressione sulle prestazioni. |
| 15.3.0 | 30 luglio 2016 | Aggiunto React.PureComponent, risolto problema con il rendering del server nidificato, aggiunui xmlns, xmlnsXlink a supporto degli attributi SVG e referrerPolicy agli attributi HTML, aggiornato componente aggiuntivo React Perf, risolto problema con ref. |
| 15.3.1 | 19 agosto 2016 | Migliorate prestazioni dei build di sviluppo, pulizia hooks interni, aggiornata fbjs, migliorati tempi di avvio di React, corretta perdita di memoria nel rendering del server, corretto React Test Renderer, trackedTouchCount invariante su console.error. |
| 15.4.0 | 16 novembre 2016 | Il pacchetto React e la build del browser non includono più React DOM, prestazioni di sviluppo migliorate, errori di test occasionali corretti, aggiornamento dell'API di batchUpdates, React Perf e ReactTestRenderer.create(). |
| 15.4.1 | 23 novembre 2016 | Ristrutturata l'assegnazione delle variabili, corretta gestione degli eventi, corretta compatibilità della build del browser in ambienti AMD. |
| 15.4.2 | 6 gennaio 2017 | Risolti problemi di build, aggiunte dipendenze di pacchetto mancanti, messaggi di errore migliorati. |
| 15.5.0 | 7 aprile 2017 | Aggiunto react-dom/test-utils, rimosse peerDependencies, risolto problema con il Closure Compiler, aggiunto avviso di deprecazione per React.createClass e React.PropTypes, corretto bug su Chrome. |
| 15.5.4 | 11 aprile 2017 | Corretta compatibilità con Enzyme esponendo batchedUpdates su renderer superficiali, aggiornata versione prop-types, corretto pacchetto react-addons-create-fragment per includere la trasformazione loose-envify. |
| 15.6.0 | 13 giugno 2017 | Aggiunto supporto alle variabili CSS nell'attributo di stile e nelle proprietà di stile della Grid, corretto supporto AMD per i componenti aggiuntivi in base a react, rimossa dipendenza non necessaria, aggiunto avviso di deprecazione per gli helper di factory React.createClass e React.DOM. |
| 16.0.0 | 26 settembre 2017 | Gestione degli errori migliorata con l'introduzione dei "error boundaries", consentito passaggio a React DOM di attributi non standard, modifiche minori al comportamento di setState, rimozione di react-con-addons.js, aggiunta di React.createClass come create-react-class, React.PropTypes come prop-types, React.DOM come react-dom-factories, modifiche al comportamento dei metodi di pianificazione e ciclo di vita. |
| 16.1.0 | 9 novembre 2017 | Interruzione dei release di Bower, correzione di una variabile globale extra accidentale nelle build UMD, correzione dell'attivazione di onMouseEnter e onMouseLeave, correzione del plceholder di <textarea>, rimozione del codice inutilizzato, aggiunta di una dipendenza mancante di package.json, aggiunta del supporto a React DevTools. |
| 16.3.0 | 29 marzo 2018 | Aggiunta una nuova API di contesto ufficialmente supportata, aggiunto nuovo pacchetto, corretto ciclo infinito quando nell'esecuzione del rendering di portali con SSR, risolto problema con this.state, risolto problema su IE/Edge. |
| 16.3.1 | 3 aprile 2018 | Prefisso API privata, corretta regressione delle prestazioni e gestione degli errori in modalità di sviluppo, aggiunta dipendenza peer, correzione di un falso avviso positivo su IE11 nell'utilizzo di Fragment. |
| 16.3.2 | 16 aprile 2018 | Risolto arresto anomalo di IE, corrette etichette nelle misurazioni dello User Timing, aggiunta build UMD, migliorate prestazioni dell'API unstable_observedBits con l'annidamento. |
| 16.4.0 | 24 maggio 2018 | Aggiunto supporto alla specifica Pointer Events, aggiunta possibilità di specificare propTypes, correzione contesto di lettura, corretto supporto a getDerivedStateFromProps(), risolto crash testInstance.parent, aggiunto componente React.unstable_Profiler per misurare le prestazioni, cambiati nomi degli eventi interni. |
| 16.5.0 | 5 settembre 2018 | Aggiunto supporto a React DevTools Profiler, gestione discreta errori in diversi casi limite, aggiunto react-dom/profiling, aggiungi evento AuxClick per browser, aggiunti campi movimentoX e movimentoY agli eventi del mouse, aggiunti tangentalPressure e campi di rotazione all'evento puntatore. |
| 16.6.0 | 23 ottobre 2018 | Aggiunto supporto a contextType, supporto a livelli di priorità, continuazioni e callback integrate, migliorato meccanismo di fallback, corretto overlay grigio su iOS Safari, aggiunto React.lazy() per i componenti di suddivisione del codice. |
| 16.7.0 | 20 dicembre 2018 | Corrette prestazioni di React.lazy per i componenti lazy-loaded, rimmossi campi su unmount per evitare leak di memoria, corretto bug in SSR, corretta regressione delle prestazioni. |
| 16.8.0 | 6 febbraio 2019 | Aggiunti hooks, aggiunti ReactTestRenderer.act() e ReactTestUtils.act() per gli aggiornamenti di batch, supporto agli elementi sincroni passati a React.lazy(), migliorata API di inizializzazione hook lazy useReducer. |
| 16.8.6 | 27 marzo 2019 | Corretto salvataggio non corretto in useReducer(), corretti avvisi iframe in Safari DevTools, avviso sull'impostazione di contextType a Context.Consumer anziché Context, avviso sull'impostazione di contextType a valori non validi. |
| 16.9.0 | 9 agosto 2019 | Aggiunta API <React.Profiler> per la raccolta programmata delle misurazioni delle prestazioni. rimosso unstable_ConcurrentMode a favore di unstable_createRoot |
| 16.10.0 | 27 settembre 2019 | Risolto caso limite in cui non veniva memorizzato un aggiornamento hook. correzione euristica per determinare quando fare l'hydrate, per non lanciarlo erroneamente durante un aggiornamento. Rimossi ulteriori campi fiber durante l'unmount per risparmiare memoria. Correzione bug sui campi di testo required in Firefox. Preferenza Object.is al posto di polyfill in linea, se disponibile. Correzione bug durante l'unione di Suspense e gestione degli errori. |
| 16.10.1 | 28 settembre 2019 | Corretta regressione nelle app Next.js consentendo a Suspense mismatch durante l'hydrate per procedura silent |
| 16.10.2 | 3 ottobre 2019 | Corretta regressione in react-native-web ripristinando l'ordine degli argomenti negli estrattori di plugin di eventi |
| 16.11.0 | 22 ottobre 2019 | Risolto lancio duplice degli handler di mouseenter all'interno dei contenitori React nidificati. Rimosse API sperimentali unstable_createRoot e unstable_createSyncRoot. (Questi sono disponibili nel canale sperimentale come createRoot e createSyncRoot.) |
| 16.12.0 | 14 novembre 2019 | React DOM - Risolti effetti passivi (useEffect) non attivati in app multi-root. React Is - Corretti tipi lazy e memo considerati elementi anziché componenti |
| 16.13.0 | 26 febbraio 2020 | Funzionalità aggiunte in modalità React Concurrent. Corrette regressioni nella libreria principale di React e React Dom. |
| 16.14.0 | 14 ottobre 2020 | Aggiunto nuovo supporto per le trasformazioni JSX |
| 17.0.0 | 20 ottobre 2020 | Rimozione del pool di eventi, aggiornamenti all'algoritmo di riconciliazione dell'albero, migliore gestione degli errori e aumentato supporto per i portali. |
| 17.0.1 | 22 ottobre 2020 | Fixato crash su IE11 |
| 17.0.22 | 22 marzo 2021 | Rimossa una dipendenza inutilizzata su SharedArrayBuffer (cross-origin-isolation warning) |
| 18.0.0 | 29 marzo 2022 | Introdotti 5 nuovi hook useId, useInsertionAffect, useTransition, useDeferredValue e useSyncExternalStore. Nuove API quali createRoot che sostituisce ReactDOM.render, hydrateRoot che sostituisce ReactDOM.hydrate Batch automatico (evita re-render indesiderati unendo tutti i setState) |
| 18.1.0 | 26 aprile 2022 | Risolti vari problemi su react-dom/client, componentWillUnmount e alcuni messaggi di warning |

Licensing

La versione pubblica iniziale di React a maggio 2013 utilizzava la mwbr0licenza Apache 2.0. Nell'ottobre 2014, React 0.12.0 l'ha sostituita con la mwbr4licenza BSD a 3 clausole e ha aggiunto un file di testo PATENTS separato che dà il consenso l'utilizzo di eventuali brevetti di Facebook relativi al software:cite-ref-42[42]

mwbsq La licenza concessa nel presente documento terminerà, automaticamente e senza preavviso, per chiunque faccia qualsiasi reclamo (anche presentando qualsiasi azione legale, asserzione o altra azione) relativa a (a) violazione o induzione diretta, indiretta o contributiva a violare qualsiasi brevetto: (i) da parte di Facebook o di una delle sue consociate o affiliate, indipendentemente dal fatto che tale reclamo sia correlato o meno al Software, (ii) da qualsiasi parte se tale reclamo deriva in tutto o in parte da qualsiasi software, prodotto o servizio di Facebook o una delle sue sussidiarie o affiliate, indipendentemente dal fatto che tale rivendicazione sia correlata o meno al Software o (iii) da qualsiasi parte relativa al Software; o (b) che qualsiasi diritto in qualsiasi rivendicazione di brevetto di Facebook sia invalido o inapplicabile.

Questa clausola non convenzionale ha causato alcune controversie e dibattiti nella comunità degli utenti di React, perché potrebbe essere interpretata per consentire a Facebook di revocare la licenza in molti scenari, ad esempio se Facebook fa causa al licenziatario spingendo a intraprendere "altre azioni" pubblicando l'azione su un blog o altrove. Molti hanno espresso preoccupazione per il fatto che Facebook potrebbe sfruttare ingiustamente la clausola di risoluzione o che l'integrazione di React in un prodotto potrebbe complicare l'acquisizione futura di una società startup.cite-ref-43[43]

Sulla base del feedback della comunità, Facebook ha aggiornato la concessione del brevetto ad aprile 2015 per renderla meno ambigua e più permissiva:cite-ref-44[44]

mwbta La licenza concessa in seguito terminerà, automaticamente e senza preavviso, se tu (o una qualsiasi delle tue consociate, affiliate o agenti aziendali) avvii direttamente o indirettamente o prendi un interesse finanziario diretto in qualsiasi Dichiarazione di brevetto: (i) contro Facebook o qualsiasi delle sue consociate o affiliate aziendali, (ii) contro qualsiasi parte se tale Dichiarazione di brevetto deriva in tutto o in parte da qualsiasi software, tecnologia, prodotto o servizio di Facebook o di una qualsiasi delle sue consociate o affiliate aziendali, o (iii) contro qualsiasi parte relativo al software. [...] Una "Dichiarazione di brevetto" è qualsiasi azione legale o altra azione relativa a violazione o induzione diretta, indiretta o contributiva a violare qualsiasi brevetto, incluso un reclamo o una domanda riconvenzionale.cite-ref-45[45]

La mwbtyApache Software Foundation ha ritenuto questo accordo di licenza incompatibile con le sue politiche di licenza, in quanto "trasmette il rischio per i consumatori a valle del nostro software sbilanciato a favore del licenziante, non del licenziatario, violando così la nostra politica legale di Apache di essere un donatore universale" e "non sono un sottoinsieme di quelle presenti in [Licenza Apache 2.0] e non possono essere concesse in licenza come [Licenza Apache 2.0] ".cite-ref-46[46] Nell'agosto 2017, Facebook ha respinto le preoccupazioni a valle della Apache Foundation e si è rifiutata di riconsiderare la loro licenza.cite-ref-47[47]cite-ref-48[48] Il mese seguente, mwbumWordPress deciso di riconfigurare fuori da React i suoi progetti Gutenberg e Calypso.cite-ref-49[49]

Il 23 settembre 2017, Facebook ha annunciato che la settimana successiva avrebbe rivisto la licenza di Flow, Jest, React e Immutable.js con una mwbuklicenza MIT standard; la compagnia dichiarò che React era "la base di un vasto ecosistema di software open source per il web" e che non volevano "frenare i progressi per ragioni non tecniche".cite-ref-50[50]

Il 26 settembre 2017, React 16.0.0 è stato rilasciato con la licenza MIT.cite-ref-51[51] Il passaggio alla licenza MIT è stato inoltre inserito nella linea di rilascio 15.x con React 15.6.2.cite-ref-52[52]

Note

cite-note-react-11. mwbv8mwbwamwbweReact - Una libreria JavaScript per creare interfacce utente, su mwbwiit.reactjs.org. mwbwmURL consultato il 22 marzo 2020.
cite-note-22. mwbwc(mwbwgmwbwkEN) Paul Krill, mwbwomwbwsReact: Making faster, smoother UIs for data-driven Web apps, in mwbwwmwbw0InfoWorld, 15 maggio 2014. mwbw4URL consultato il 22 marzo 2020.
cite-note-33. mwbxi(mwbxmmwbxqEN) Zef Hemel, mwbxumwbxyFacebook's React JavaScript User Interfaces Library Receives Mixed Reviews, in mwbxcInfoQ, 3 giugno 2013. mwbxgURL consultato il 22 marzo 2020.
cite-note-44. mwbxw(mwbx0mwbx4EN) Chris Dawson, mwbx8mwbyaJavaScript’s History and How it Led To ReactJS, in mwbyeThe New Stack, 25 luglio 2014. mwbyiURL consultato il 22 marzo 2020.
cite-note-55. mwbyy(mwbycmwbygEN) Stanislav, mwbykmwbyoHow React Native App Development Works Under the Hood, su mwbysMobiDev. mwbywURL consultato il 3 aprile 2021.
cite-note-66. mwbza(mwbzemwbziEN) Jon Samp, mwbzmmwbzqReact Router to Redux First Router, su mwbzumwbzyMedium, 13 gennaio 2018. mwbzcURL consultato il 22 marzo 2020.
cite-note-77. mwbzs(mwbzwmwbz0EN) mwbz4mwbz8Redux - A predictable state container for JavaScript apps., su mwbaaredux.js.org. mwbaeURL consultato il 22 marzo 2020.
cite-note-88. mwbau(mwbaymwbacEN) mwbagmwbakReact Router: Declarative Routing for React.js, su mwbaoreacttraining.com. mwbasURL consultato il 22 marzo 2020.
cite-note-react-99. mwba8mwbbamwbbe10+ calcolatrici di reazione gratuite e utili. mwbbiURL consultato il 23 ottobre 2022.
cite-note-1010. mwbby(mwbbcmwbbgEN) mwbbkmwbboStart a New React Project – React, su mwbbsreact.dev. mwbbwURL consultato il 6 dicembre 2023.
cite-note-1111. mwbcamwbcemwbciComponenti e Props, su mwbcmit.reactjs.org. mwbcqURL consultato il 22 marzo 2020.
cite-note-workingwiththebrowser-1212. mwbcg(mwbckmwbcoEN) mwbcsmwbcwRefs ed il DOM, su mwbc0it.reactjs.org. mwbc4URL consultato il 22 marzo 2020.
cite-note-1313. mwbdi(mwbdmmwbdqEN) mwbdumwbdyDraft: JSX Specification, su mwbdcfacebook.github.io. mwbdgURL consultato il 22 marzo 2020.
cite-note-1414. mwbdw(mwbd0mwbd4EN) Andrew Clark, mwbd8mwbeaReact v16.0§New render return types: fragments and strings, su mwbeeReact Blog, 26 settembre 2017. mwbeiURL consultato il 22 marzo 2020.
cite-note-1515. mwbey(mwbecmwbegEN) Andrew Clark, mwbekmwbeoReact v16.0§Support for custom DOM attributes, su mwbesReact Blog, 26 settembre 2017. mwbewURL consultato il 22 marzo 2020.
cite-note-1616. mwbfa(mwbfemwbfiEN) Ludovico Fischer, mwbfmmwbfqReact for Real: Front-End Code, Untangled, Pragmatic Bookshelf, 6 settembre 2017, mwbfuISBNmwbfy 9781680504484.
cite-note-1717. mwbfs(mwbfwmwbf0EN) Pete Hunt, mwbf4mwbf8Why did we build React?, su mwbgaReact Blog, 5 giugno 2013. mwbgeURL consultato il 23 marzo 2020.
cite-note-paypal-isomorphic-reactjs-1818. mwbgu(mwbgymwbgcEN) mwbggPayPal Engineering, mwbgkmwbgoIsomorphic React Apps with React-Engine, su mwbgsmwbgwMedium, 27 aprile 2015. mwbg0URL consultato il 23 marzo 2020.
cite-note-netflix-isomorphic-reactjs-1919. mwbhe(mwbhimwbhmEN) mwbhqNetflix Technology Blog, mwbhumwbhyNetflix Likes React, su mwbhcmwbhgMedium, 28 gennaio 2015. mwbhkURL consultato il 23 marzo 2020.
cite-note-2020. mwbh0mwbh4mwbh8Panoramica sugli Hooks, su mwbiait.reactjs.org. mwbieURL consultato il 23 marzo 2020.
cite-note-2121. mwbiu(mwbiymwbicEN) Dillion Megida, mwbigmwbikWhat the Heck is React Hooks?, su mwbioSoshace, 16 gennaio 2020. mwbisURL consultato il 23 marzo 2020.
cite-note-2222. mwbi8mwbjamwbjeUsare l'Hook State, su mwbjiit.reactjs.org. mwbjmURL consultato il 23 marzo 2020.
cite-note-2323. mwbjc(mwbjgmwbjkEN) mwbjomwbjsUsare l'Hook Effect, su mwbjwit.reactjs.org. mwbj0URL consultato il 23 marzo 2020.
cite-note-2424. mwbke(mwbkimwbkmEN) mwbkqmwbkuAPI di Riferimento degli Hooks, su mwbkyit.reactjs.org. mwbkcURL consultato il 23 marzo 2020.
cite-note-2525. mwbksmwbkwmwbk0Regole degli Hooks, su mwbk4it.reactjs.org. mwbk8URL consultato il 23 marzo 2020.
cite-note-2626. mwblmmwblqmwbluHooks Personalizzati, su mwblyit.reactjs.org. mwblcURL consultato il 23 marzo 2020.
cite-note-flux-2727. mwbls(mwblwmwbl0EN) mwbl4mwbl8In-Depth Overview, su mwbmafacebook.github.io/flux. mwbmeURL consultato il 23 marzo 2020 mwbmi(archiviato dall'mwbmmurl originale il 7 agosto 2022).
cite-note-2828. mwbmc(mwbmgmwbmkEN) mwbmomwbmsIntroduction to Flux - React Exercise, su mwbmwnicholasjohnson.com. mwbm0URL consultato il 23 marzo 2020.
cite-note-2929. mwbne(mwbnimwbnmEN) Dan Abramov, mwbnqmwbnuThe History of React and Flux with Dan Abramov, su mwbnyThree Devs and a Maybe, 6 novembre 2015. mwbncURL consultato il 23 marzo 2020.
cite-note-3030. mwbns(mwbnwmwbn0EN) mwbn4mwbn8State Management Tools - Results, su mwboaThe State of JavaScript. mwboeURL consultato il 23 marzo 2020.
cite-note-3131. mwbou(mwboymwbocEN) mwbogmwbokWhere To Get Support, su mwbooit.reactjs.org. mwbosURL consultato il 23 marzo 2020.
cite-note-3232. mwbo8mwbpamwbpeThe Future of React(?), su mwbpimwbpmGitHub. mwbpqURL consultato il 23 marzo 2020.
cite-note-3333. mwbpgmwbpkmwbpoIssues · facebook/react, su mwbpsmwbpwGitHub. mwbp0URL consultato il 23 marzo 2020.
cite-note-3434. mwbqemwbqimwbqmjordwalke/FaxJs: Fax Javascript Ui Framework, su mwbqqmwbquGitHub. mwbqyURL consultato il 23 marzo 2020.
cite-note-3535. mwbqomwbqsmwbqw (mwbq4mwbq8EN) TXJS, mwbramwbrePete Hunt | TXJS 2015, su mwbrimwbrmYouTube, 28 luglio 2015. mwbrqURL consultato il 23 marzo 2020.
cite-note-papp-3636. mwbrg(mwbrkmwbroEN) Ferenc Hámori, mwbrsmwbrwThe History of React.js on a Timeline, in mwbr0RisingStack, 4 aprile 2018. mwbr4URL consultato il 23 marzo 2020.
cite-note-3737. mwbsiFrederic Lardinois, mwbsmmwbsqFacebook announces React Fiber, a rewrite of its React library, TechCrunch, 18 aprile 2017. mwbsuURL consultato il 19 aprile 2017.
cite-note-3838. mwbskmwbsomwbssReact Fiber Architecture, su mwbswmwbs0GitHub. mwbs4URL consultato il 23 marzo 2020.
cite-note-3939. mwbti(mwbtmmwbtqEN) Andrew Clark, mwbtumwbtyReact v16.0, su mwbtcreactjs.org, 26 settembre 2017. mwbtgURL consultato il 23 marzo 2020.
cite-note-4040. mwbtw(mwbt0mwbt4EN) Dan Abramov, mwbt8mwbuaReact v16.8: The One With Hooks, su mwbueReact Blog, 6 febbraio 2019. mwbuiURL consultato il 23 marzo 2020.
cite-note-4141. mwbuymwbucmwbugIntroduzione agli Hooks, su mwbukit.reactjs.org. mwbuoURL consultato il 23 marzo 2020.
cite-note-4242. mwbu4(mwbu8mwbvaEN) mwbvemwbviReact CHANGELOG.md, su mwbvmmwbvqGitHub. mwbvuURL consultato il 25 marzo 2020.
cite-note-4343. mwbvk(mwbvomwbvsEN) Berkana, mwbvwmwbv0A compelling reason not to use ReactJS, su mwbv4mwbv8Medium, 25 maggio 2015. mwbwaURL consultato il 25 marzo 2020.
cite-note-4444. mwbwq(mwbwumwbwyEN) mwbwcmwbwgUpdating Our Open Source Patent Grant, su mwbwkengineering.fb.com, 10 aprile 2015. mwbwoURL consultato il 25 marzo 2020.
cite-note-4545. mwbw4(mwbw8mwbxaEN) mwbxemwbxiAdditional Grant of Patent Rights Version 2, su mwbxmmwbxqGitHub. mwbxuURL consultato il 25 marzo 2020.
cite-note-4646. mwbxk(mwbxomwbxsEN) mwbxwmwbx0ASF 3rd Party License Policy, su mwbx4apache.org, mwbx8Apache Software Foundation. mwbyaURL consultato il 25 marzo 2020.
cite-note-4747. mwbyq(mwbyumwbyyEN) mwbycmwbygExplaining React’s license, su mwbykengineering.fb.com, 18 agosto 2017. mwbyoURL consultato il 25 marzo 2020.
cite-note-4848. mwby4(mwby8mwbzaEN) mwbzemwbziConsider re-licensing to AL v2.0, as RocksDB has just done, su mwbzmmwbzqGitHub. mwbzuURL consultato il 25 marzo 2020.
cite-note-4949. mwbzk(mwbzomwbzsEN) Natasha Lomas, mwbzwmwbz0WordPress to ditch React library over Facebook patent clause risk, in mwbz4mwbz8TechCrunch, 15 settembre 2017. mwb0aURL consultato il 25 marzo 2020.
cite-note-5050. mwb0q(mwb0umwb0yEN) mwb0cmwb0gRelicensing React, Jest, Flow, and Immutable.js, su mwb0kengineering.fb.com, 23 settembre 2017. mwb0oURL consultato il 25 marzo 2020.
cite-note-5151. mwb04(mwb08mwb1aEN) Andrew Clark, mwb1emwb1iReact v16.0§MIT licensed, su mwb1mReact Blog, 26 settembre 2017. mwb1qURL consultato il 25 marzo 2020.
cite-note-5252. mwb1g(mwb1kmwb1oEN) Nathan Hunzaker, mwb1smwb1wReact v15.6.2, su mwb10React Blog, 25 settembre 2017. mwb14URL consultato il 25 marzo 2020.

Voci correlate

• mwb2iAngularJS
• mwb2qAngular
• mwb2yVue.js

Altri progetti

Altri progetti

• Wikimedia Commons

• Wikimedia Commons contiene immagini o altri file su React

Collegamenti esterni

• (EN) Sito ufficiale, su react.dev.
• (EN) Blog ufficiale, su react.dev.
• Repository sorgenti di React, su github.com.